home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / t_os / secev10 / secev10.bas < prev    next >
BASIC Source File  |  1991-10-18  |  20KB  |  520 lines

  1. 100 '**********************************
  2. 200 '*                                                                *
  3. 300 '*   SuperEscColor_EDT v 1.0         *
  4. 400 '*                                *
  5. 500 '*        Program By.Yosio.M               *
  6. 600 '*                                *
  7. 700 '*                    H03/07/20                  *
  8. 800 '**********************************
  9. 900 '
  10. 1000 '
  11. 1100 '---------------------------------------------------------------------
  12. 1200 CLEAR ,5000,300000
  13. 1300 SCREEN@ 2
  14. 1400 COLOR 7,0,7,0
  15. 1500 CLS:WIDTH 80,25
  16. 1600 CONSOLE 21,1,1
  17. 1700 '---------------------------------------------------------------------  
  18. 1800 DEFINT L,X,Y
  19. 1900 DIM DOT$(37,60),COL$(37,60),ESC$(50)
  20. 2000 COL=7
  21. 2100 TOWNS=1'--------------------タウンズ用
  22. 2200 AT_COL=0'-------------------アトリビュート(ノーマル)
  23. 2300 展開文字$="★"
  24. 2400 マウス$="★"
  25. 2500 マウス_IN$="★☆■□●○◎▽△▼▲◇◆【】≪≫/\⊂⊃※†‡⌒〓⇔§∫∬♯♭♪∞"
  26. 2600 マウス_PU$=マウス_IN$
  27. 2700 展開保持$=マウス_IN$
  28. 2800 ページ=0
  29. 2900 単_連=0
  30. 3000 回転=0
  31. 3100 '---------------------------------------------------------------------
  32. 3200 'ノーマル
  33. 3300 ESC$(0)=CHR$(27)+"[m"
  34. 3400 ESC$(1)=CHR$(27)+"[34m":ESC$(2)=CHR$(27)+"[31m":ESC$(3)=CHR$(27)+"[35m"
  35. 3500 ESC$(4)=CHR$(27)+"[32m":ESC$(5)=CHR$(27)+"[36m":ESC$(6)=CHR$(27)+"[33m"
  36. 3600 ESC$(7)=CHR$(27)+"[37m"
  37. 3700 '----------------------------------------------------------------------
  38. 3800 'ブリンク
  39. 3900 ESC$(40)=CHR$(27)+"[m"
  40. 4000 ESC$(41)=CHR$(27)+"[5;34m":ESC$(42)=CHR$(27)+"[5;31m":ESC$(43)=CHR$(27)+"[5;35m" 
  41. 4100 ESC$(44)=CHR$(27)+"[5;32m":ESC$(45)=CHR$(27)+"[5;36m":ESC$(46)=CHR$(27)+"[5;33m"
  42. 4200 ESC$(47)=CHR$(27)+"[5;37m":ESC$(50)=CHR$(27)+"[m" 
  43. 4300 '---------------------------------------------------------------------
  44. 4400 'リバース
  45. 4500 ESC$(10)=CHR$(27)+"[m"
  46. 4600 ESC$(11)=CHR$(27)+"[7;34m":ESC$(12)=CHR$(27)+"[7;31m":ESC$(13)=CHR$(27)+"[7;35m" 
  47. 4700 ESC$(14)=CHR$(27)+"[7;32m":ESC$(15)=CHR$(27)+"[7;36m":ESC$(16)=CHR$(27)+"[7;33m" 
  48. 4800 ESC$(17)=CHR$(27)+"[7;37m" 
  49. 4900 '---------------------------------------------------------------------
  50. 5000 KEY  1,"展開字"
  51. 5100 KEY  2,"マウス"
  52. 5200 KEY  3," 単頁 "
  53. 5300 KEY  4," 前頁 "
  54. 5400 KEY  5," 次頁 "
  55. 5500 KEY  6,"ノーマル  "
  56. 5600 KEY  7,"画面消"
  57. 5700 KEY  8,"画面塗"
  58. 5800 KEY  9,"ロード"
  59. 5900 KEY 10,"セーブ"
  60. 6000 '---------------------------------------------------------------------
  61. 6100 ON MOUSE(1) GOSUB *マウスXY
  62. 6200 ON MOUSE(2) GOSUB *マウス左
  63. 6300 ON MOUSE(4) GOSUB *マウス右
  64. 6400 ON ERROR GOTO *エラー
  65. 6500 GOSUB *初期画面
  66. 6600 GOSUB *マウス文字表示
  67. 6700 GOSUB *マウス初期化
  68. 6800 GOSUB *マウスXY
  69. 6900 '---------------------------------------------------------------------
  70. 7000 *LOOP'----- 一応ここでプログラムをループする。
  71. 7100 '
  72. 7200 GOTO *LOOP
  73. 7300 '---------------------------------------------------------------------
  74. 7400 *初期画面
  75. 7500 COLOR 7,,,4
  76. 7600 LOCATE 2,0:PRINT "□";
  77. 7700 COLOR ,,,0
  78. 7800 FOR I=1 TO 7
  79. 7900   COLOR I
  80. 8000   LOCATE I*2+2,0
  81. 8100   PRINT "■"
  82. 8200 NEXT I
  83. 8300 COLOR ,,,4
  84. 8400 LOCATE 20,0:IF 展開文字セット=1 THEN COLOR 2,,,1:PRINT "展開文字"; ELSE PRINT "展開文字";
  85. 8500 LOCATE 28,0:PRINT "〔"+展開文字$+"〕"
  86. 8600 LOCATE 30,0:PRINT 展開文字$
  87. 8700 LOCATE 36,0:PRINT "マウス〔";:COLOR ,,,0:PRINT マウス$;:COLOR ,,,4:PRINT "〕";:COLOR ,,,0:PRINT "■";:COLOR 7,,,4
  88. 8800 LOCATE 54,0:PRINT "X=";LPX;
  89. 8900 LOCATE 61,0:PRINT "Y=";LPY;
  90. 9000 LOCATE 69,0:PRINT "ページ"+STR$(ページ+1);
  91. 9100 FOR LX=1 TO 38
  92. 9200   II=LX+100 
  93. 9300   IF LX MOD 5 THEN SYMBOL(LX*16+3,23),".",1,1,6 ELSE SYMBOL(LX*16-1,22),RIGHT$(STR$(II),2),1,1,6
  94. 9400 NEXT LX
  95. 9500 FOR LY=1 TO 20
  96. 9600   II=LY+100
  97. 9700   IF LY MOD 5 THEN SYMBOL(8,LY*19+15),".",1,1,6 ELSE SYMBOL(0,LY*19+19),RIGHT$(STR$(II),2),1,1,6
  98. 9800 NEXT LY
  99. 9900 RETURN
  100. 10000 '---------------------------------------------------------------------
  101. 10100 *マウス初期化
  102. 10200 MOUSE 0
  103. 10300 MOUSE 1,30,50,1
  104. 10400 MOUSE 4,16,0,621,479
  105. 10500 MOUSE (1) ON
  106. 10600 MOUSE (2) ON
  107. 10700 MOUSE (4) ON
  108. 10800 RETURN
  109. 10900 '---------------------------------------------------------------------
  110. 11000 *マウスXY
  111. 11100 IF MOUSE(1)<416 THEN MOUSE 4,16,0,621,479 ELSE MOUSE 4,0,16,621,479 
  112. 11200 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
  113. 11300 IF LPY<2 OR LPY>21 THEN RETURN
  114. 11400 COLOR 7,,,4
  115. 11500 LOCATE 57,0:PRINT LPX;
  116. 11600 LOCATE 64,0:PRINT LPY-1;
  117. 11700 LOX=LPX-1
  118. 11800 LOY=LPY-2
  119. 11900 RETURN
  120. 12000 '--------------------------------------------------------------------- 
  121. 12100 *マウス左
  122. 12200 MOUSE(1) OFF
  123. 12300 IF LPY<2 THEN GOSUB *マウス上:MOUSE(1) ON:RETURN
  124. 12400 IF LPY>21 OR MOUSE(1)>462 THEN GOSUB *マウス下:MOUSE(1) ON:RETURN
  125. 12500 IF 展開文字セット=1 THEN GOSUB *パターン:MOUSE(1) ON:RETURN
  126. 12600 GOSUB *サウンド1
  127. 12700 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF
  128. 12800 WHILE MOUSE(2,0)=-1
  129. 12900 IF MOUSE(2,1)=-1 THEN GOSUB *マウスPUT
  130. 13000 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
  131. 13100 IF LPY<2 OR LPY>21 THEN 14400
  132. 13200 COLOR 7,,,4
  133. 13300 LOCATE 57,0:PRINT LPX;
  134. 13400 LOCATE 64,0:PRINT LPY;
  135. 13500 COLOR COL,,,AT_COL
  136. 13600 LOCATE LPX*2,LPY
  137. 13700 PRINT マウス$;
  138. 13800 LOX=LPX-1
  139. 13900 LOY=LPY-2
  140. 14000 IF COL=0 THEN DOT$(LOX,LOY+ページ*20)="  " ELSE DOT$(LOX,LOY+ページ*20)=マウス$
  141. 14100 COL$(LOX,LOY+ページ*20)=STR$(AT_COL)+STR$(COL)
  142. 14200 WEND
  143. 14300 COLOR 7,,,4
  144. 14400 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON
  145. 14500 RETURN
  146. 14600 '--------------------------------------------------------------------- 
  147. 14700 *マウス右
  148. 14800 IF LPY<2 THEN RETURN
  149. 14900 GOSUB *サウンド1
  150. 15000 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF
  151. 15100 WHILE MOUSE(2,1)=-1
  152. 15200 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
  153. 15300 IF LPY<2 OR LPY>21 THEN 16400
  154. 15400 COLOR 7,,,4
  155. 15500 LOCATE 57,0:PRINT LPX;
  156. 15600 LOCATE 64,0:PRINT LPY;
  157. 15700 LOCATE LPX*2,LPY
  158. 15800 PRINT "  ";
  159. 15900 LOX=LPX-1
  160. 16000 LOY=LPY-2
  161. 16100 DOT$(LOX,LOY+ページ*20)=""
  162. 16200 COL$(LOX,LOY+ページ*20)=""
  163. 16300 WEND 
  164. 16400 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON
  165. 16500 RETURN
  166. 16600 '---------------------------------------------------------------------
  167. 16700 *マウスPUT
  168. 16800 MOS_P=1:K_LEN=LEN(マウス_IN$)
  169. 16900 FOR X=LPX TO LPX+K_LEN/2-1
  170. 17000     IF X>38 THEN RETURN
  171. 17100        MOS$=MID$(マウス_IN$,MOS_P,1)+MID$(マウス_IN$,MOS_P+1,1)
  172. 17200         DOT$(X-1,(LPY-2)+ページ*20)=MOS$
  173. 17300         COL$(X-1,(LPY-2)+ページ*20)=STR$(AT_COL)+STR$(COL)
  174. 17400         LOCATE X*2,LPY
  175. 17500         COLOR COL,,,AT_COL
  176. 17600        PRINT MOS$;
  177. 17700     MOS_P=MOS_P+2
  178. 17800 GOSUB *サウンド1
  179. 17900 NEXT X
  180. 18000 RETURN
  181. 18100 '---------------------------------------------------------------------
  182. 18200 *パターン
  183. 18300 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
  184. 18400 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
  185. 18500 IF LPY<2 OR LPY>21 THEN RETURN
  186. 18600 LOX=LPX-1
  187. 18700 LOY=LPY-2
  188. 18800 POX=0:POY=0
  189. 18900 FOR Y=LOY TO LOY+15:POX=0
  190. 19000   FOR X=LOX TO LOX+15
  191. 19100     P=POINT(POX+240,POY)
  192. 19200     COLOR COL,,,AT_COL
  193. 19300     IF P AND X<38 AND Y<20 THEN LOCATE X*2+2,Y+2:PRINT マウス$;
  194. 19400     IF P AND X<38 AND 単_連=1 AND ページ<2 THEN DOT$(X,Y+ページ*20)=マウス$:COL$(X,Y+ページ*20)=STR$(AT_COL)+STR$(COL)
  195. 19500     IF P AND X<38 AND Y<20 AND (単_連=0 OR ページ=2) THEN DOT$(X,Y+ページ*20)=マウス$:COL$(X,Y+ページ*20)=STR$(AT_COL)+STR$(COL)
  196. 19600     POX=POX+1
  197. 19700   NEXT X
  198. 19800     POY=POY+1
  199. 19900 NEXT Y
  200. 20000 展開文字セット=0 
  201. 20100 COLOR 7,0,7,4:LOCATE 20,0:PRINT "展開文字";
  202. 20200 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
  203. 20300 RETURN
  204. 20400 '---------------------------------------------------------------------
  205. 20500 *マウス上
  206. 20600 COLOR ,,,0
  207. 20700 IF (LPX<1 OR LPX>8)=0 AND LPY=0 THEN COL=LPX-1:GOSUB *サウンド1:LOCATE 48,0:IF COL=0 THEN COLOR 7:PRINT "□"; ELSE COLOR COL:PRINT "■";
  208. 20800 COLOR COL,,,AT_COL
  209. 20900 LOCATE 44,0
  210. 21000 PRINT マウス$;
  211. 21100 IF (LPX<10 OR LPX>13)=0 THEN GOSUB *展開文字セット
  212. 21200 IF LPX=15 THEN GOSUB *回転
  213. 21300 RETURN
  214. 21400 '---------------------------------------------------------------------
  215. 21500 *マウス下
  216. 21600 IF LPY=22 AND LPX>3 THEN GOSUB *選出:RETURN
  217. 21700 IF LPY=23 THEN RETURN
  218. 21800 IF MOUSE(1)<462 THEN RETURN
  219. 21900 PF_SET=MOUSE(0)/56
  220. 22000 IF PF_SET>10 THEN RETURN
  221. 22100 PF_SET=INT(PF_SET)+1
  222. 22200 GOSUB *サウンド1
  223. 22300 ON PF_SET GOSUB *展開文字,*マウス,*連_単,*前頁,*次頁,*リバース,*画面消去,*画面塗りつぶし,*ロード,*セーブ
  224. 22400 RETURN
  225. 22500 '---------------------------------------------------------------------
  226. 22600 *サウンド1
  227. 22700 PLAY "L200O7F"
  228. 22800 RETURN
  229. 22900 '---------------------------------------------------------------------
  230. 23000 *選出
  231. 23100 IF マウス記憶=1 THEN K_LEN=LEN(マウス保持$)/2
  232. 23200 IF 展開記憶=1   THEN K_LEN=LEN(展開保持$)/2
  233. 23300 IF マウス記憶=1 AND K_LEN<LPX-4 THEN RETURN
  234. 23400 IF 展開記憶=1   AND K_LEN<LPX-4 THEN RETURN
  235. 23500 IF マウス記憶=1 AND K_LEN<LPX-3 THEN マウス_IN$=マウス_PU$:LOCATE 0,22:GOSUB 29300:RETURN
  236. 23600 IF 展開記憶=1 AND K_LEN<LPX-3 THEN 展開文字_IN$=マウス_PU$:LOCATE 0,22:GOSUB 25000:RETURN
  237. 23700 GOSUB *サウンド1
  238. 23800 選出1=SCREEN(LPX*2,22):選出2=SCREEN(LPX*2+1,22)
  239. 23900 IF マウス記憶=1 THEN マウス$=CHR$(選出1)+CHR$(選出2)  :COLOR COL,,,AT_COL:LOCATE 44,0:PRINT マウス$;
  240. 24000 IF 展開記憶=1   THEN 展開文字$=CHR$(選出1)+CHR$(選出2):COLOR 7,,,4:LOCATE 30,0:PRINT 展開文字$;
  241. 24100 RETURN
  242. 24200 '---------------------------------------------------------------------
  243. 24300 *展開文字
  244. 24400 LOCATE 0,22:PRINT SPACE$(80);
  245. 24500 LOCATE 0,22
  246. 24600 COLOR 7,,,4
  247. 24700 LINE INPUT"展開文字を入力してください。";展開文字_IN$
  248. 24800 IF 展開文字_IN$="" THEN 展開文字_IN$=展開保持$
  249. 24900 IF LEN(展開文字_IN$) MOD 2 THEN 展開文字_IN$=展開文字_IN$+" "
  250. 25000 展開文字$=LEFT$(展開文字_IN$,2):展開文字_IN$=MID$(展開文字_IN$,1,68)
  251. 25100 LOCATE 30,0 
  252. 25200 PRINT 展開文字$;
  253. 25300 *展開文字表示
  254. 25400 LOCATE 0,22:PRINT SPACE$(80);
  255. 25500 LOCATE 0,22:COLOR 4,,,1:PRINT "展開文字";:COLOR 7,,,4:PRINT 展開文字_IN$;:COLOR 2,,,1:PRINT "?";:COLOR 7,,,4
  256. 25600 展開記憶=1
  257. 25700 マウス記憶=0
  258. 25800 回転=0
  259. 25900 展開保持$=展開文字_IN$
  260. 26000 RETURN
  261. 26100 '---------------------------------------------------------------------
  262. 26200 *展開文字セット
  263. 26300 GOSUB *サウンド1
  264. 26400 IF 展開文字$="" THEN RETURN
  265. 26500 IF 展開文字セット=0 THEN 展開文字セット=1 ELSE 展開文字セット=0
  266. 26600 IF 展開文字セット=1 THEN COLOR 2,,,1:LOCATE 20,0:PRINT "展開文字"; ELSE COLOR 7,,,4:LOCATE 20,0:PRINT "展開文字";
  267. 26700 COLOR 7,,,4:LOCATE 30,0:PRINT "  ";
  268. 26800 回転=0
  269. 26900 GOSUB 28000
  270. 27000 RETURN
  271. 27100 '---------------------------------------------------------------------
  272. 27200 *回転:COLOR 7,,,4
  273. 27300 IF 展開文字$="" OR 展開文字$="  " OR 展開文字セット=0 THEN RETURN
  274. 27400 GOSUB *サウンド1
  275. 27500 COLOR 7,,,4:LOCATE 30,0:PRINT "  ";
  276. 27600 IF 回転=0 THEN 回転=1:GOTO 28000
  277. 27700 IF 回転=1 THEN 回転=2:GOTO 28000
  278. 27800 IF 回転=2 THEN 回転=3:GOTO 28000
  279. 27900 IF 回転=3 THEN 回転=0
  280. 28000 IF 回転=1 THEN SYMBOL(240,15),展開文字$,1,1,7,1
  281. 28100 IF 回転=2 THEN SYMBOL(255,15),展開文字$,1,1,7,2
  282. 28200 IF 回転=3 THEN SYMBOL(255,0),展開文字$,1,1,7,3
  283. 28300 IF 回転=0 THEN SYMBOL(240,0),展開文字$,1,1,7,0
  284. 28400 RETURN
  285. 28500 '---------------------------------------------------------------------
  286. 28600 *マウス
  287. 28700 LOCATE 0,22:PRINT SPACE$(80);
  288. 28800 LOCATE 0,22
  289. 28900 COLOR 7,,,4
  290. 29000 LINE INPUT"マウスの文字を入力してください。";マウス_IN$
  291. 29100 IF LEN(マウス_IN$) MOD 2 THEN マウス_IN$=マウス_IN$+" "
  292. 29200 IF マウス_IN$="" THEN マウス_IN$=マウス保持$
  293. 29300 マウス$=LEFT$(マウス_IN$,2):マウス_IN$=MID$(マウス_IN$,1,68)
  294. 29400 COLOR COL,,,AT_COL
  295. 29500 LOCATE 44,0
  296. 29600 PRINT マウス$;
  297. 29700 *マウス文字表示
  298. 29800 COLOR 7,,,4
  299. 29900 LOCATE 0,22:PRINT SPACE$(80);
  300. 30000 LOCATE 0,22:COLOR 6,,,1:PRINT "マウス  ";:COLOR 7,,,4:PRINT マウス_IN$;:COLOR 2,,,1:PRINT "?";:COLOR 7,,,4
  301. 30100 展開記憶=0
  302. 30200 マウス記憶=1
  303. 30300 マウス保持$=マウス_IN$
  304. 30400 COLOR 7,,,4
  305. 30500 RETURN
  306. 30600 '---------------------------------------------------------------------
  307. 30700 *連_単
  308. 30800 IF 単_連=0 THEN 単_連=1 ELSE 単_連=0
  309. 30900 IF 単_連=0 THEN KEY 3," 単頁 "
  310. 31000 IF 単_連=1 THEN KEY 3," 連頁 "
  311. 31100 RETURN
  312. 31200 '---------------------------------------------------------------------
  313. 31300 *前頁
  314. 31400 IF ページ<1 THEN RETURN
  315. 31500 ページ=ページ-1
  316. 31600 GOSUB *頁サブ
  317. 31700 RETURN
  318. 31800 '---------------------------------------------------------------------
  319. 31900 *次頁
  320. 32000 IF ページ>1 THEN RETURN
  321. 32100 ページ=ページ+1
  322. 32200 GOSUB *頁サブ
  323. 32300 RETURN
  324. 32400 '---------------------------------------------------------------------
  325. 32500 *頁サブ
  326. 32600 COL1=COL:AT_COL1=AT_COL
  327. 32700 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
  328. 32800 FOR LY=0 TO 19
  329. 32900   FOR LX=0 TO 37
  330. 33000       COL=VAL(MID$(COL$(LX,LY+ページ*20),4,1))
  331. 33100       COLOR 7,0,7,0
  332. 33200       IF COL=0 THEN LOCATE LX*2+2,LY+2:PRINT "  ";:NEXT LX:GOTO 33800
  333. 33300       AT_COL=VAL(MID$(COL$(LX,LY+ページ*20),2,1))
  334. 33400       LOCATE LX*2+2,LY+2
  335. 33500       COLOR COL,,,AT_COL
  336. 33600       PRINT DOT$(LX,LY+ページ*20);
  337. 33700   NEXT LX
  338. 33800 NEXT LY
  339. 33900 COL=COL1:AT_COL=AT_COL1
  340. 34000 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
  341. 34100 COLOR 7,,,4
  342. 34200 LOCATE 69,0:PRINT "ページ"+STR$(ページ+1);
  343. 34300 RETURN
  344. 34400 '---------------------------------------------------------------------
  345. 34500 *リバース
  346. 34600 IF AT_COL=0 THEN AT_COL=1:KEY 6,"リバース":GOTO 34900 
  347. 34700 IF AT_COL=1 THEN AT_COL=2:KEY 6,"ブリンク":IF TOWNS=1 THEN AT_COL=4:GOTO 34900 ELSE GOTO 34900
  348. 34800 IF AT_COL=2 OR AT_COL=4 THEN AT_COL=0:KEY 6,"ノーマル"
  349. 34900 COLOR COL,,,AT_COL
  350. 35000 IF 展開記憶=1   THEN K_LEN=LEN(展開保持$)/2
  351. 35100 LOCATE 44,0
  352. 35200 PRINT マウス$;
  353. 35300 COLOR 7,,,4
  354. 35400 RETURN
  355. 35500 '
  356. 35600 '---------------------------------------------------------------------
  357. 35700 *画面消去
  358. 35800 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
  359. 35900 YY=2
  360. 36000 COLOR 7,0,7,0
  361. 36100 FOR Y=ページ*20 TO ページ*20+19
  362. 36200     FOR X=0 TO 37
  363. 36300         DOT$(X,Y)=""
  364. 36400         COL$(X,Y)=""
  365. 36500         LOCATE X*2+2,YY
  366. 36600         PRINT "  ";
  367. 36700     NEXT X
  368. 36800      YY=YY+1
  369. 36900 NEXT Y
  370. 37000 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
  371. 37100 RETURN
  372. 37200 '---------------------------------------------------------------------
  373. 37300 *画面塗りつぶし
  374. 37400 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
  375. 37500 COLOR COL,,,AT_COL
  376. 37600 YY=2
  377. 37700 FOR Y=ページ*20 TO ページ*20+19
  378. 37800     FOR X=0 TO 37 
  379. 37900        DOT$(X,Y)=マウス$
  380. 38000        COL$(X,Y)=STR$(AT_COL)+STR$(COL)
  381. 38100        LOCATE X*2+2,YY
  382. 38200        PRINT マウス$;
  383. 38300     NEXT X
  384. 38400      YY=YY+1
  385. 38500 NEXT Y
  386. 38600 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
  387. 38700 RETURN
  388. 38800 '---------------------------------------------------------------------
  389. 38900 *ロード
  390. 39000 LOCATE 0,22:PRINT SPACE$(80);
  391. 39100 LINE(0,418)-(639,462),PRESET,0,BF
  392. 39200 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
  393. 39300 COL1=COL:AT_COL1=AT_COL
  394. 39400 COLOR 7,,,4
  395. 39500 LOCATE 0,22
  396. 39600 LINE INPUT"ロードファイル名 ?";FIL$
  397. 39700 IF FIL$="" THEN 42400
  398. 39800 FIL$=LEFT$(FIL$,8)+".ESL"
  399. 39900 LOCATE 0,22:PRINT SPACE$(80);
  400. 40000 LOCATE 0,22
  401. 40100 LOCATE 0,22:PRINT "ファイル名 "+FIL$+" をロード中。"
  402. 40200 OPEN "I",#1,FIL$
  403. 40300 LINE INPUT #1,FIL_CH$
  404. 40400 IF FIL_CH$<>"SECEV10" THEN CLOSE #1:GOTO *ファイルエラー
  405. 40500 ERASE DOT$,COL$:DIM DOT$(37,60),COL$(37,60)
  406. 40600 LINE INPUT #1,PE$
  407. 40700    PE=VAL(PE$)
  408. 40800 FOR Y=0 TO PE*20-1
  409. 40900        IF (ESC2$=ESC$) AND ESC<8 THEN ESC$=""
  410. 41000   FOR X=0 TO 37
  411. 41100        LINE INPUT #1,ESL$
  412. 41200          COL$(X,Y)=MID$(ESL$,1,2)+MID$(ESL$,3,2)
  413. 41300             COL=VAL(MID$(ESL$,4,1))
  414. 41400             AT_COL=VAL(MID$(ESL$,2,1))
  415. 41500          COLOR COL,,,AT_COL
  416. 41600        ESC2$=ESC1$
  417. 41700        LINE INPUT #1,ESL$
  418. 41800      DOT$(X,Y)=ESL$
  419. 41900      LOCATE X*2+2,Y+2
  420. 42000      IF Y<20 THEN IF ESL$="" THEN PRINT "  "; ELSE PRINT ESL$;
  421. 42100   NEXT X
  422. 42200 NEXT Y
  423. 42300 CLOSE #1
  424. 42400 COLOR 7,,,4
  425. 42500 ページ=0
  426. 42600 LOCATE 69,0:PRINT "ページ"+STR$(ページ+1);
  427. 42700 LINE(0,418)-(639,462),PRESET,0,BF
  428. 42800 COL=COL1:AT_COL=AT_COL1
  429. 42900 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
  430. 43000 FOR T=0 TO 3:BEEP 1:WAIT 3:BEEP 0:WAIT 3:NEXT T
  431. 43100 GOSUB *マウス文字表示
  432. 43200 RETURN
  433. 43300 '---------------------------------------------------------------------
  434. 43400 *セーブ
  435. 43500 追加=0
  436. 43600 LOCATE 0,22:PRINT SPACE$(80);
  437. 43700 LINE(0,418)-(639,462),PRESET,0,BF
  438. 43800 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
  439. 43900 COLOR 7,,,4
  440. 44000 LOCATE 0,22
  441. 44100 LINE INPUT"セーブファイル名 ?";FIL1$
  442. 44200 IF FIL1$="" THEN 48100
  443. 44300 LOCATE 0,22
  444. 44400 LINE INPUT"セーブページ枚数 ?(1<->3)";PE$
  445. 44500 IF PE$="" THEN 48100
  446. 44600 PE=VAL(PE$)
  447. 44700 IF PE<1 OR PE>3 THEN BEEP:GOTO 44300
  448. 44800 FIL$=LEFT$(FIL1$,8)+".ESC"
  449. 44900 IF 追加=0 THEN OPEN "O",#1,FIL$:PRINT #1,CHR$(27)+"[1v"+CHR$(27)+"[2J"
  450. 45000 IF 追加=1 THEN OPEN "A",#1,FIL$
  451. 45100 LOCATE 0,22:PRINT SPACE$(80);
  452. 45200 LOCATE 0,22:PRINT "ファイル名 "+FIL$+" でセーブ中。"
  453. 45300 FOR Y=0 TO PE*20-1
  454. 45400   ESC_CH=0:SAV$="  "
  455. 45500   FOR X=0 TO 37
  456. 45600     IF DOT$(X,Y)="" THEN DOT$(X,Y)="  "
  457. 45700        ESC=VAL(COL$(X,Y)) 
  458. 45800             '------------------------フィールドが短くて苦労したぜぇ!
  459. 45900        IF ESC=ESC_CH THEN SAV$=SAV$+DOT$(X,Y)
  460. 46000        IF ESC<>ESC_CH THEN IF (ESC<7 AND ESC_CH>10) THEN SAV$=SAV$+ESC$(50)+ESC$(ESC)+DOT$(X,Y) ELSE SAV$=SAV$+ESC$(ESC)+DOT$(X,Y) 
  461. 46100             '------------------------やっと出来たぜぇ!
  462. 46200        ESC_CH=ESC
  463. 46300        IF LEN(SAV$)>200 THEN PRINT #1,SAV$;:SAV$=""
  464. 46400   NEXT X
  465. 46500   IF Y=PE*20-1 THEN PRINT #1,SAV$+CHR$(27)+"[0v"+ESC$(50) ELSE PRINT #1,SAV$+ESC$(50)
  466. 46600 NEXT Y
  467. 46700 CLOSE #1
  468. 46800 '-----------------------------------なんとか動いたぞっ!と。
  469. 46900 FIL$=LEFT$(FIL1$,8)+".ESL"
  470. 47000 IF 追加=0 THEN OPEN "O",#1,FIL$
  471. 47100 IF 追加=1 THEN 48100
  472. 47200 PRINT #1,"SECEV10"
  473. 47300 PRINT #1,PE$
  474. 47400 FOR Y=0 TO PE*20
  475. 47500   FOR X=0 TO 37
  476. 47600    PRINT #1,COL$(X,Y)
  477. 47700    PRINT #1,DOT$(X,Y)
  478. 47800   NEXT X
  479. 47900 NEXT Y
  480. 48000 CLOSE #1
  481. 48100 LINE(0,418)-(639,462),PRESET,0,BF
  482. 48200 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
  483. 48300 FOR T=0 TO 3:BEEP 1:WAIT 3:BEEP 0:WAIT 3:NEXT T
  484. 48400 GOSUB *マウス文字表示
  485. 48500 RETURN
  486. 48600 '---------------------------------------------------------------------
  487. 48700 *エラー
  488. 48800 BEEP:ER_R$=""
  489. 48900 LOCATE 0,22
  490. 49000 ER_R$=STR$(ERL)+"行にNo."+STR$(ERR)+"のエラーが発生しました"
  491. 49100 IF ERR=53 THEN ER_R$="入出力装置に異常が発生しました"
  492. 49200 IF ERR=60 OR ERR=72 THEN ER_R$="指定の入出力装置は使用できません"
  493. 49300 IF ERR=63 THEN PRINT"指定のファイル(ディレクトリ)は見つかりません":ER_R$="又は指定のドライブ番号が違います"
  494. 49400 IF ERR=64 THEN CLOSE #1:RESUME *更新
  495. 49500 IF ERR=65 OR ERR=67 THEN ER_R$="ディスクに空き領域がありません"
  496. 49600 IF ERR=73 THEN ER_R$="指定されたディスクは書き込みが禁止されています"
  497. 49700 PRINT ER_R$+" マウスの左を押してください。";
  498. 49800 WHILE MOUSE(2,0)=0
  499. 49900 WEND
  500. 50000 LINE(0,418)-(639,462),PRESET,0,BF
  501. 50100 RESUME 6600
  502. 50200 '---------------------------------------------------------------------
  503. 50300 *更新
  504. 50400 LOCATE 0,22
  505. 50500 PRINT "指定のファイルは既に存在しています。更新=マウス左 追加=マウス右"
  506. 50600 IF MOUSE(2,0)=-1 THEN KILL LEFT$(FIL1$,8)+".ESC":KILL LEFT$(FIL1$,8)+".ESL":GOTO 44900
  507. 50700 IF MOUSE(2,1)=-1 THEN 追加=1:GOTO 45000
  508. 50800 GOTO 50600
  509. 50900 '---------------------------------------------------------------------
  510. 51000 *ファイルエラー
  511. 51100 BEEP
  512. 51200 LOCATE 0,22
  513. 51300 PRINT SPACE$(80);
  514. 51400 LOCATE 0,22
  515. 51500 PRINT "只今のロードファイル"+FIL$+"は,現システムではロード不可能なファイルです。"
  516. 51600 PRINT "マウスの右を押してください。"; 
  517. 51700 WHILE MOUSE(2,1)=0
  518. 51800 WEND
  519. 51900 GOTO 42400
  520.